﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Super.Core.CodeHelper;

namespace Super.Core.IDBO
{
    /// <summary>
    /// 封装了获取数据库信息的接口； by 赵国伟  2011-03-06
    /// </summary>
    public interface IDbObject
    {
        /// <summary>
        ///  数据库类型
        /// </summary>
        string DbType
        {
            get;
        }
        /// <summary>
        /// 数据库连接字符串
        /// </summary>
        string DbConnectStr
        {
            set;
            get;
        }

        #region db操作

        int ExecuteSql(string SQLString);
        DataSet Query(string SQLString);

        #endregion

    

        #region  得到数据库的所有用户表名 GetTables()
        /// <summary>
        /// 得到数据库的所有表名
        /// </summary>
        /// <returns></returns>
        List<string> GetTables();
        #endregion

        #region 得到数据库的所有视图名   GetVIEWs()
        List<string> GetVIEWs();
        #endregion

        #region  得到数据库的所有表的详细信息 GetTablesInfo()

        /// <summary>
        /// 得到数据库的所有表的详细信息
        /// </summary>
        /// <returns></returns>
        List<TableInfo> GetTablesInfo();

        #endregion

        #region 得到数据库的所有视图的详细信息

        List<TableInfo> GetVIEWsInfo();
        
        #endregion



        #region 得到(快速)数据库里表的列名和类型 GetColumnList(string TableName)
        /// <summary>
        /// 得到数据库里表的列名和类型
        /// </summary>
        /// <param name="TableName"></param>
        /// <returns></returns>
        List<ColumnInfo> GetColumnList(string TableName);
        #endregion

        #region 得到数据库里指定表的所有列的详细信息 GetColumnInfoList(string TableName)
        /// <summary>
        /// 得到数据库里表的列的详细信息
        /// </summary>
        /// <param name="DbName"></param>
        /// <param name="TableName"></param>
        /// <returns></returns>
        List<ColumnInfo> GetColumnInfoList(string TableName);
        #endregion

        #region 得到数据库里表的主键 GetKeyName(string TableName)
        /// <summary>
        /// 得到数据库里表的主键
        /// </summary>
        /// <param name="TableName"></param>
        /// <returns></returns>
        DataTable GetKeyName(string TableName);
        #endregion

        #region 得到数据表里的数据 GetTabData(string TableName)

        /// <summary>
        /// 得到数据表里的数据
        /// </summary>
        /// <param name="TableName">表名</param>
        /// <returns></returns>
        DataTable GetTabData(string TableName);

        #endregion

        #region 获得数据库的版本 GetVersion();

        string GetVersion();

        #endregion






    }



}
